#import <Foundation/Foundation.h>

@interface CrashHandler : NSObject

+ (instancetype)sharedInstance;
- (void)startCrashMonitor;
- (void)startOOMCrashMonitor;
- (void)logMemoryUsage;
- (NSString *)symbolicateAddress:(void *)address;
- (void)saveCrashLog:(NSString *)log;
- (void)uploadCrashLogs;
- (void)rotateLogs;
- (NSString *)encryptLog:(NSString *)log;
- (void)uploadBatchLogs;
- (NSData *)compressLog:(NSString *)log;
- (void)scheduleUpload;
- (void)saveCrashLog:(NSString *)log withCategory:(NSString *)category;
- (void)uploadLogsInBackground;
- (BOOL)shouldUploadLog:(NSString *)log;
- (void)setUploadStrategy:(void (^)(NSData *logData))strategy;
- (void)analyzeLog:(NSString *)log;
- (void)uploadWithRetry:(NSData *)logData maxRetries:(NSInteger)maxRetries;
- (void)aggregateLogs;
- (void)uploadWithPriority:(NSData *)logData priority:(NSInteger)priority;

@end 